feof関数は、ファイルポインタで示されるストリームのEOF(end of file)の状態を調べます。

#include <stdio.h>
int feof(FILE *stream);

*streamはfopen関数で取得した、ファイルポインタを指定します。

戻り値として、EOFであれば0以外の値を返します。

入力関数の多くはEOF(end of file)あるいは、エラーを検出したらEOF値を返しますので、EOFなのかエラーなのか分かりません。そのような場合に、feof関数でEOFの状態か否かを調べることができます。

プログラム 例

#include <stdio.h>

int main(void)
{
  FILE    *fp;
  int     in_data;

  if ((fp = fopen('temp.txt', 'r')) != NULL) {
    while((in_data = fgetc(fp)) != EOF) {
      putchar(in_data);
    }

    if (feof(fp) != 0) {
      printf('正常に入力しました\n');
    }
    else {
      printf('入力エラーです\n');
    }

    fclose(fp);
  }
  else {
    printf('ファイルのオープンに失敗しました\n');
  }

  return 0;
}

例の実行結果

$ cat temp.txt
Hello World!!.
$
$ ./feof.exe
Hello World!!.
正常に入力しました
$